class Solution
{
public:
    int maxConsecutive(int bottom, int top, vector<int>& special)
    {
        // 核心思路：统计两个特殊楼层间的楼层数
        // 把 special 从小到大排序后，计算如下数字的最大值，即为答案：
        // special[i] − special[i−1]−1
        // special[0] −bottom
        // top−special[n − 1]。其中 n 是 special 的长度

        int n = special.size();
        sort(special.begin(), special.end());
        int ans = 0;
        for(int i = 0; i < n - 1; i++)
        {
            int right = special[i + 1], left = special[i];
            if(left + 1 > right - 1)
                continue;
            else
                ans = max(ans, right - left - 1);
        }
        return max({ans, special[0] == bottom ? 0 : special[0] - bottom, special[n - 1] == top ? 0 : top - special[n - 1]});
    }
};